package com.wwu.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wwu.common.web.ResultObj;
import com.wwu.common.web.ResultPage;
import com.wwu.system.entity.SysDict;
import java.util.List;

/**
 * 系统字典服务接口类
 * @author 一蓑烟雨
 * @date 2021-10-26
 * @version 1.0.0
 */
public interface ISysDictService extends IService<SysDict> {

    /**
     * 根据字典编码或类型编码获取字典信息
     * @param dictTypeId  字典类型
     * @param dictId  字典编码
     * @return com.wwu.system.entity.SysDict
     * @author 一蓑烟雨
     * @date 2023/7/6 17:01
     */
    SysDict getDictById(String dictTypeId, String dictId);

    /**
     * 根据字典编码或名称获取字典信息
     * @param dictTypeId  字典类型编码
     * @param dictName   字典名称
     * @return com.wwu.system.entity.SysDict
     * @author 一蓑烟雨
     * @date 2023/7/4 21:07
     */
    SysDict getDictByName(String dictTypeId, String dictName);

    /**
     * 分页查询系统字典信息
     * @param pageNum  页码
     * @param pageSize  每页数量
     * @param sysDict  字典实体信息
     * @return com.wwu.common.web.ResultPage<com.wwu.system.entity.SysDict>
     * @author 一蓑烟雨
     * @date 2023/7/3 18:02
     */
    ResultPage<SysDict> getDictListPage(Integer pageNum, Integer pageSize, SysDict sysDict);

    /**
     * 添加字典信息
     * @param sysDict  字典实体信息
     * @author 一蓑烟雨
     * @date 2023/7/3 18:02
     */
    void saveDict(SysDict sysDict);

    /**
     * 更新字典信息
     * @param sysDict  字典实体信息
     * @author 一蓑烟雨
     * @date 2023/7/3 18:02
     */
    void updateDict(SysDict sysDict);

    /**
     * 更新字典状态
     * @param dictId 字典编码
     * @param dictStatus 字典状态
     * @author 一蓑烟雨
     * @date 2023/7/6 18:19
     */
    void updateDictStatus(String dictTypeId, String dictId, Integer dictStatus);

    /**
     * 删除字典(逻辑删除)
     * @param dictTypeId 字典类型编码
     * @param dictId 字典编码
     * @author 一蓑烟雨
     * @date 2023/7/6 18:19
     */
    void deleteDict(String dictTypeId, String dictId);

    /**
     * 根据字典类型编码删除字典明细
     * @param dictTypeIds 字典类型编码
     * @author 一蓑烟雨
     * @date 2023/7/3 21:12
     * @return
     */
    boolean deleteDictByTypeId(List<String> dictTypeIds);

    /**
     * 查询字典数据，在项目启动时加载
     * @return com.wwu.common.web.ResultObj
     * @author 一蓑烟雨
     * @date 2023/7/20 16:14
     */
    ResultObj sysDictCache();
}
